//
//  Extenison+NSDate.swift
//  CZWeibo31
//
//  Created by apple on 16/8/15.
//  Copyright © 2016年 itcast. All rights reserved.
//
/*
    使用NSDateFormatter 和NSCalendar.currentCalendar()  注意问题   
        - 它们的创建和销毁 对ios的性能影响很大 所以不要重复创建或者销毁 
        - 解决办法 创建一个全局的(Swift做法)  oc中可以使用单例

*/
import UIKit
// 清理微博缓存数据的时间
private let deleteCacheTime: Double = -60*60*2
// 时间格式化
private let df = NSDateFormatter()
// 日历类
let calendar = NSCalendar.currentCalendar()

extension NSDate {
    // 获取请求微博数据缓存的时间字符串
    class func deleteSinaTime() -> String{
        // 删除数据时间
        let date = NSDate().dateByAddingTimeInterval(deleteCacheTime)
        df.locale = NSLocale(localeIdentifier: "en_US")
        df.dateFormat = "yyyy-MM-dd HH:mm:ss"
        return df.stringFromDate(date)
    }
    // 计算微博日期
    class func getSinaDate(createAt: String) -> NSDate{
        
        // 设置格式
        df.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        // 本地化
        df.locale = NSLocale(localeIdentifier: "en_US")
        // 微博时间
        let sinaDate = df.dateFromString(createAt)!
        return sinaDate
    }
    
    // 得到微博时间格式化后的 字符串
    var sinaDateDescription: String{
        // 是否是今年
        let isThisYear = sinaIsThisYear(self)
        if isThisYear {

            // 如果是今天
            if calendar.isDateInToday(self) {
                // 当前时间和微博时间 求差
                let s = Int(NSDate().timeIntervalSinceDate(self))
                // s< 60 显示 刚刚
                if s < 60 {
                    return "刚刚"
                }else if s >= 60 && s < 3600 {
                    // xx分钟前
                    return "\(s/60)分钟前"
                }else {
                    // xx小时前
                    return "\(s/3600)小时前"
                }
            }else if calendar.isDateInYesterday(self) {
                // 如果是昨天 2014年06月14日 20:20:20 显示 昨天 20:20
                df.dateFormat = "昨天 HH:mm"
            }else {
                //  其他 2014年06月14日 20:20:20 显示 06月14日 20:20
                df.dateFormat = "MM月dd日 HH:mm"
            }
        }else {
            // 不是今年2014年06月14日 20:20
            // 重新指定格式
            df.dateFormat = "yyyy年MM月dd日 HH:mm"
        }
        return df.stringFromDate(self)
    }
    // 判断是否是今年
    func sinaIsThisYear(sinaDate: NSDate) -> Bool{
        // 设置格式
        df.dateFormat = "yyyy"
        // 本地化
        df.locale = NSLocale(localeIdentifier: "en_US")
        // 微博时间字符串
        let sinaTimeStr = df.stringFromDate(sinaDate)
        // 当前时间
        let currentTimeStr = df.stringFromDate(NSDate())
        return sinaTimeStr == currentTimeStr
    }
}
